package com.yht.weblog.admin.schedule;

import com.yht.weblog.common.domain.dos.StatisticsArticlePVDO;
import com.yht.weblog.common.domain.mapper.StatisticsArticlePVMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * @author: yht
 * @date: 2024/1/28 17:52
 * @description:
 **/
@Component
@Slf4j
public class InitPVRecordScheduledTask {

    @Autowired
    private StatisticsArticlePVMapper statisticsArticlePVMapper;

    /**
     * 每天 23:00 执行的定时任务，用于初始化明日的 PV 访问量记录
     */
    @Scheduled(cron = "0 0 23 * * ?")
    public void execute(){
        log.info("==> 开始执行初始化明日 PV 访问量记录定时任务");
        LocalDate currDate = LocalDate.now();
        LocalDate tomorrowDate = currDate.plusDays(1);
        /**
         * 构建明日的 PV 访问量记录对象
         */
        StatisticsArticlePVDO articlePVDO = StatisticsArticlePVDO.builder()
                // 明日的日期
                .pvDate(tomorrowDate)
                // 明日的 PV 访问量记录初始化为 0
                .pvCount(0L)
                .createTime(LocalDateTime.now())
                .updateTime(LocalDateTime.now())
                .build();

        /**
         * 将明日的 PV 访问量记录插入数据库
         */
        statisticsArticlePVMapper.insert(articlePVDO);
        log.info("==> 初始化明日 PV 访问量记录定时任务执行完毕");
    }

}
